import { createStore } from 'vuex'
import createPersistedState from 'vuex-persistedstate'

//三个模块
import cart from './modules/cart'
import user from './modules/user'
import category from './modules/category'

export default createStore({
  modules:{
    cart,
    user,
    category
  },
    // 配置插件
    plugins: [
      // 默认存储在localStorage
      createPersistedState({
        // 本地存储名字
        key: 'erabbit-client-pc-124-store',
        // 指定需要存储的模块
        paths: ['user', 'cart']
      })
    ]
})

// A模块
// 默认的模块，state 区分模块，其他 getters mutations actions 都在全局。
// const moduleA = {
//   state: {
//     username: 'moduleA'
//   },
//   getters: {
//     newName (state) {
//       return state.username + '!!!'
//     }
//   },
//   mutations: {
//     upadateName (state) {
//       state.username = 'aaaa'
//     }
//   }
// }
// // B模块
// // 带命名空间 namespaced: true 的模块，所有功能区分模块，更高封装度和复用。
// const moduleB = {
//   namespaced: true,
//   state: {
//     username: 'moduleB'
//   },
//   getters: {
//     newName (state) {
//       return state.username + '!!!'
//     }
//   },
//   mutations: {
//     updateName (state) {
//       state.username = 'ls'
//     }
//   },
//   actions: {
//     updateName (ctx) {
//       // state.username = 'ls'
//       // 发请求
//       setTimeout(() => {
//         ctx.commit('updateName')
//       }, 1000)
//     }
//   }
// }
// export default createStore({
//   modules: {
//     moduleA,
//     moduleB
//   }
// })

// vue2.0 创建仓库 new Vuex.Store({})
// vue3.0 创建仓库 createStore({})
// export default createStore({
//   state: {
//     username: 'zs'
//   },
//   getters: {
//     newName (state) {
//       return state.username + '!!!'
//     }
//   },
//   mutations: {
//     updateName (state) {
//       state.username = 'ls'
//     }
//   },
//   actions: {
//     updateName (ctx) {
//       // state.username = 'ls'
//       // 发请求
//       setTimeout(() => {
//         ctx.commit('updateName')
//       }, 1000)
//     }
//   },
//   modules: {

//   }
// })
